﻿
// CWnd类Dlg.cpp: 实现文件
//

#include "pch.h"
#include "framework.h"
#include "CWnd类.h"
#include "CWnd类Dlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CCWnd类Dlg 对话框



CCWnd类Dlg::CCWnd类Dlg(CWnd* pParent /*=nullptr*/)
	: CDialogEx(IDD_CWND_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CCWnd类Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CCWnd类Dlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CCWnd类Dlg::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &CCWnd类Dlg::OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON3, &CCWnd类Dlg::OnBnClickedButton3)
	ON_BN_CLICKED(IDC_BUTTON4, &CCWnd类Dlg::OnBnClickedButton4)
	ON_BN_CLICKED(IDC_BUTTON5, &CCWnd类Dlg::OnBnClickedButton5)
	ON_BN_CLICKED(IDC_BUTTON6, &CCWnd类Dlg::OnBnClickedButton6)
	ON_BN_CLICKED(IDC_BUTTON7, &CCWnd类Dlg::OnBnClickedButton7)
	ON_BN_CLICKED(IDC_BUTTON8, &CCWnd类Dlg::OnBnClickedButton8)
	ON_BN_CLICKED(IDC_BUTTON9, &CCWnd类Dlg::OnBnClickedButton9)
	ON_BN_CLICKED(IDC_BUTTON10, &CCWnd类Dlg::OnBnClickedButton10)
	ON_BN_CLICKED(IDC_BUTTON11, &CCWnd类Dlg::OnBnClickedButton11)
	ON_BN_CLICKED(IDC_BUTTON12, &CCWnd类Dlg::OnBnClickedButton12)
	ON_BN_CLICKED(IDC_BUTTON14, &CCWnd类Dlg::OnBnClickedButton14)
	ON_BN_CLICKED(IDC_BUTTON15, &CCWnd类Dlg::OnBnClickedButton15)
	ON_BN_CLICKED(IDC_BUTTON16, &CCWnd类Dlg::OnBnClickedButton16)
	ON_BN_CLICKED(IDC_BUTTON17, &CCWnd类Dlg::OnBnClickedButton17)
	ON_BN_CLICKED(IDC_BUTTON18, &CCWnd类Dlg::OnBnClickedButton18)
	ON_BN_CLICKED(IDC_BUTTON19, &CCWnd类Dlg::OnBnClickedButton19)
	ON_BN_CLICKED(IDC_BUTTON20, &CCWnd类Dlg::OnBnClickedButton20)
	ON_BN_CLICKED(IDC_BUTTON13, &CCWnd类Dlg::OnBnClickedButton13)
	ON_BN_CLICKED(IDC_BUTTON21, &CCWnd类Dlg::OnBnClickedButton21)
	ON_BN_CLICKED(IDC_BUTTON24, &CCWnd类Dlg::OnBnClickedButton24)
	ON_BN_CLICKED(IDC_BUTTON25, &CCWnd类Dlg::OnBnClickedButton25)
	ON_BN_CLICKED(IDC_BUTTON26, &CCWnd类Dlg::OnBnClickedButton26)
	ON_BN_CLICKED(IDC_BUTTON28, &CCWnd类Dlg::OnBnClickedButton28)
	ON_BN_CLICKED(IDC_BUTTON29, &CCWnd类Dlg::OnBnClickedButton29)
	ON_BN_CLICKED(IDC_BUTTON30, &CCWnd类Dlg::OnBnClickedButton30)
	ON_BN_CLICKED(IDC_BUTTON31, &CCWnd类Dlg::OnBnClickedButton31)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_BUTTON32, &CCWnd类Dlg::OnBnClickedButton32)
	ON_BN_CLICKED(IDC_BUTTON33, &CCWnd类Dlg::OnBnClickedButton33)
	ON_BN_CLICKED(IDC_BUTTON22, &CCWnd类Dlg::OnBnClickedButton22)
	ON_BN_CLICKED(IDC_BUTTON27, &CCWnd类Dlg::OnBnClickedButton27)
	ON_BN_CLICKED(IDC_BUTTON35, &CCWnd类Dlg::OnBnClickedButton35)
	ON_BN_CLICKED(IDC_BUTTON23, &CCWnd类Dlg::OnBnClickedButton23)
	ON_BN_CLICKED(IDC_BUTTON34, &CCWnd类Dlg::OnBnClickedButton34)
	ON_BN_CLICKED(IDC_BUTTON36, &CCWnd类Dlg::OnBnClickedButton36)
	ON_BN_CLICKED(IDC_BUTTON37, &CCWnd类Dlg::OnBnClickedButton37)
	ON_BN_CLICKED(IDC_BUTTON38, &CCWnd类Dlg::OnBnClickedButton38)
END_MESSAGE_MAP()


// CCWnd类Dlg 消息处理程序

BOOL CCWnd类Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时，框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码

	//获取窗口的宽和高(带任务栏的宽和高）：
	int width = GetSystemMetrics(SM_CXSCREEN);		//2520
	int height = GetSystemMetrics(SM_CYSCREEN);		//1680

	
	//list1	设置：
	CListCtrl* plist = (CListCtrl*) GetDlgItem(IDC_LIST1);
	plist->InsertColumn(0, L"编号", LVCFMT_LEFT,100);
	plist->InsertColumn(1, L"窗口名", LVCFMT_LEFT,300);
	plist->InsertColumn(2, L"类名", LVCFMT_LEFT,700);


	return TRUE;  // 除非将焦点设置到控件，否则返回 TRUE
}

// 如果向对话框添加最小化按钮，则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序，
//  这将由框架自动完成。

void CCWnd类Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CCWnd类Dlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}



void CCWnd类Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	this->MessageBox(L"消息框", L"tips", MB_OK | MB_ICONINFORMATION/*提示图标*/);
}


void CCWnd类Dlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	// 
	//获取主窗口的标题：
	CString str;
	GetWindowText(str);
	MessageBox(str);

}


//获取子控件：
void CCWnd类Dlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码

#if 0
	//Win32方式：
		//加了"::" 作用域运算符 所用的函数就是win32的函数：
	HWND hBton2 = ::GetDlgItem(m_hWnd/*窗口句柄*/, IDC_BUTTON2/*成员ID	获取哪个id里面的函数成员*/);
	wchar_t buff[MAX_PATH];
	::GetWindowText(hBton2,buff,MAX_PATH);
	MessageBox(buff);
#else
	//MFC方式：
	CWnd* pWnd = GetDlgItem(IDC_BUTTON2/*获取第二个按键里面的函数成员*/);
	if (pWnd)	//如果id没有 运行有可能出现错误	所以判断一下
	{
		CString str;
		pWnd->GetWindowText(str);
		this->MessageBox(str);
	}
#endif

}



void CCWnd类Dlg::OnBnClickedButton4()
{
	// TODO: 在此添加控件通知处理程序代码

	CWnd* pWnd = GetDlgItem(IDC_BUTTON4);


	//多次点击按钮 依次修改按钮的工程名：
	static int n = 0;
#if 0
	//c的方式：
	wchar_t buff[50] = { 0 };
	wsprintf(buff,L"功德 + %d",++n);
#else
	//cpp方式
	CString buff;
	buff.Format(L"功德 + %d", ++n);

#endif


	pWnd->SetWindowText(buff);				//修改按钮的工程名

	//工程文件名修改提示：
	static int number_of_runs = 0;
	if(0 == number_of_runs++)
		MessageBox(L"注意 对话框的工程文件名要修改成落地的大母牛了（从Cwnd类改成）\n \t再点击按钮就修改的是按钮的工程名了！！！！", L"tips", MB_OK | MB_ICONINFORMATION);
	
	this->SetWindowText(L"落地的大母牛");		//修改对话框的工程文件名

}


void CCWnd类Dlg::OnBnClickedButton5()
{
	// TODO: 在此添加控件通知处理程序代码

	//获取长度：
	CWnd* pWnd = GetDlgItem(IDC_BUTTON5);
	int length = pWnd->GetWindowTextLength();

	CString str;
	str.Format(L"子控件的函数长度为：%d", length);
	MessageBox(str);

}


//最小化窗口：
void CCWnd类Dlg::OnBnClickedButton6()
{
	// TODO: 在此添加控件通知处理程序代码

	CloseWindow();
	//这个函数等效于：
		ShowWindow(SW_MINIMIZE);	//最小化
}


//干掉窗口
void CCWnd类Dlg::OnBnClickedButton7()
{
	// TODO: 在此添加控件通知处理程序代码
	DestroyWindow();

	

}


//干掉子控件的按钮图标：
void CCWnd类Dlg::OnBnClickedButton8()
{
	// TODO: 在此添加控件通知处理程序代码
	//能不能干掉子控件？
	CWnd* pWnd = GetDlgItem(IDC_BUTTON8);
	if (pWnd)
		pWnd->DestroyWindow();
}


//使其（子控件）居中
void CCWnd类Dlg::OnBnClickedButton9()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON9);
	pWnd->CenterWindow();
}


//寻找相应的窗口 再把他关掉吧
void CCWnd类Dlg::OnBnClickedButton10()
{
	// TODO: 在此添加控件通知处理程序代码

	CWnd* pWnd = FindWindow(L"Notepad"/*窗口的类*/,
		L"Something to be fucked.txt - Notepad"/*窗口的标题*/
		);
	/*	FindWindow函数要找到某个程序窗口 需要这个窗口的类 和标题	用visual studio的工具里面的spy++(+) 里面的 查找窗口（望远镜的小图标）	拖拽准星到该窗口就会找到类 和标题	*/
	if (pWnd)
	{
		MessageBox(L"Found something to be fucked \n Look, I'm going to him",L"tips",MB_OK | MB_ICONINFORMATION);

				//pWnd->DestroyWindow();	//这个函数貌似只能删除visual studio中的	权限不够
		//用其他方式：
		pWnd->SendMessage(WM_CLOSE/*关闭指令*/, NULL, NULL);	//发送消息

	}
	else
	{
		MessageBox(L"All fucked?", L"tips", MB_OK | MB_ICONINFORMATION);
	}
}


void CCWnd类Dlg::OnBnClickedButton11()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = FindWindow(L"Notepad"/*窗口的类*/,
		L"Something to be fucked.txt - Notepad"/*窗口的标题*/
	);
	
	if (pWnd)
	{
		MessageBox(L"Found something to be fucked \n Look, I'm going to him", L"tips", MB_OK | MB_ICONINFORMATION);


#if 1
		CWnd* pEdit = pWnd->FindWindowEx(pWnd->m_hWnd, NULL,L"RichEditD2DPT",NULL);
		if (pEdit != NULL)
		{
			pEdit->MoveWindow(300, 300, 500, 500);
		}
		else
		{
			MessageBox(L"pEdit 查找失败 没有找到匹配的子程序");
		}
#else
		CWnd* pEdit = pWnd->FindWindowEx(pWnd->m_hWnd, NULL, L"Notepad", NULL);
		if (pEdit != NULL)
		{
			pEdit->SendMessage(WM_CLOSE, NULL, NULL);

		}
		else
		{
			MessageBox(L"pEdit 查找失败 没有找到匹配的子程序");
		}
#endif
	}
	else
	{
		MessageBox(L"All fucked?", L"tips", MB_OK | MB_ICONINFORMATION);
	}
}


//刷新窗口：
void CCWnd类Dlg::OnBnClickedButton12()
{
	// TODO: 在此添加控件通知处理程序代码
	FlashWindow(TRUE);		//FALSE 不闪		TRUE 闪
}


//刷新指定的区域：
void CCWnd类Dlg::OnBnClickedButton14()
{
	// TODO: 在此添加控件通知处理程序代码
	FlashWindowEx(FLASHW_ALL | FLASHW_CAPTION | FLASHW_TIMER | FLASHW_TIMERNOFG,10,5000);
	//效果非常不明显
}


//获取桌面的地址
void CCWnd类Dlg::OnBnClickedButton15()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pDesktop = GetDesktopWindow();	//获取桌面的地址

	CString str;
	str.Format(L"桌面窗口句柄:%x", pDesktop->m_hWnd/*获取桌面的句柄*/);

	MessageBox(str);

}


//得到对话框的风格：
void CCWnd类Dlg::OnBnClickedButton16()
{
	// TODO: 在此添加控件通知处理程序代码
	DWORD style = GetStyle();

	if (style & WS_MAXIMIZEBOX)
	{
		if (style & WS_MINIMIZEBOX)
		{
			MessageBox(L"最大化框和最小化框都有");
		}
		else
			MessageBox(L"有最大化框");
	}
}


//修改对话框的风格
void CCWnd类Dlg::OnBnClickedButton17()
{
	// TODO: 在此添加控件通知处理程序代码

	//1.先找到对话框的风格：
	DWORD style = GetStyle();


	//2.再修改：
	ModifyStyle(WS_CAPTION/*第一个参数是删除掉什么风格		WS_CAPTION是标题*/,
				WS_BORDER /*第二个参数是添加什么风格		WS_BORDER 是边框		因为边框已经存在 所以没有影响作用*/
						  /*最后一个参数是默认的	可以不传*/);

}


void CCWnd类Dlg::OnBnClickedButton18()
{
	
	// TODO: 在此添加控件通知处理程序代码
	if(IDOK == MessageBox(L"注意：使用该功能需要管理员身份!!! 不然该功能没用 \n不是管理员身份 你点确定也屁用没有",L"tips",MB_OKCANCEL | MB_ICONINFORMATION))
	{
		DWORD style = GetExStyle();

		if (style & WS_EX_ACCEPTFILES)	//可以接受文件吗
		{
			MessageBox(L"本身就可以接受文件");
		}
		else							//如果不能接受文件	就修改对话框的风格
		{
			ModifyStyleEx(NULL, WS_EX_ACCEPTFILES, 0);
			MessageBox(L"已经修改为可以修改文件了\n可以把文件拖拽带对话框里了！！！", L"tips", MB_OK | MB_ICONINFORMATION);

		}
	}
	
}


//判断是不是子控件;
void CCWnd类Dlg::OnBnClickedButton19()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON19);
	if (IsChild(pWnd))		//开始判断是不是子控件
	{
		MessageBox(L"是子控件");
	}
	else					//不是子控件
	{
		MessageBox(L"不是子控件");
	}
}


//判断是不是最小化：
void CCWnd类Dlg::OnBnClickedButton20()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON6);
	if (pWnd->IsIconic())
	{
		MessageBox(L"最小化了");
	}
	else
	{
		MessageBox(L"没有最小化");
	}
}


//使能窗口
void CCWnd类Dlg::OnBnClickedButton13()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON6);
	if (pWnd)
	{
		if (pWnd->IsWindowEnabled())	//如果窗口被使能了
		{
			pWnd->EnableWindow(false);	//参数是true，窗口就可以使用 即被修改； 如果是false，窗口就不能被使用；
		}
		else
		{
			pWnd->EnableWindow(true);
		}
	}
}


//判断是不是最大化了；
void CCWnd类Dlg::OnBnClickedButton21()
{
	// TODO: 在此添加控件通知处理程序代码
	if (IsZoomed())
	{
		MessageBox(L"最大化了");
	}
	else
	{
		MessageBox(L"母鸡哎，好像没有最大化");
	}
}


void CCWnd类Dlg::OnBnClickedButton24()
{
	// TODO: 在此添加控件通知处理程序代码
	CRect rect;

	GetWindowRect(&rect);

	CString str;
	str.Format(L"左:%d-上:%d-右:%d-下:%d (宽:%d-长:%d)",
		rect.left, rect.top, rect.right, rect.bottom, rect.Width(), rect.Height());

	MessageBox(str);


}


void CCWnd类Dlg::OnBnClickedButton25()
{
	// TODO: 在此添加控件通知处理程序代码
	CRect rect;

	GetClientRect(&rect);

	CString str;
	str.Format(L"左:%d-上:%d-右:%d-下:%d (宽:%d-长:%d)",
		rect.left, rect.top, rect.right, rect.bottom, rect.Width(), rect.Height());

	MessageBox(str);
}


void CCWnd类Dlg::OnBnClickedButton26()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON26);
	CRect rect;
	pWnd->GetClientRect(&rect);

	CString str;
	str.Format(L"屏幕坐标系：左:%d-上:%d-右:%d-下:%d (宽:%d-长:%d)",
		rect.left, rect.top, rect.right, rect.bottom, rect.Width(), rect.Height());
	MessageBox(str);

	ScreenToClient(&rect);

	str.Format(L"客户起坐标系：左:%d-上:%d-右:%d-下:%d (宽:%d-长:%d)",
		rect.left, rect.top, rect.right, rect.bottom, rect.Width(), rect.Height());
	MessageBox(str);
}


void CCWnd类Dlg::OnBnClickedButton28()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON28);
	CRect rect;
	pWnd->GetClientRect(&rect);

	CString str;
	str.Format(L"客户区坐标系：左:%d-上:%d-右:%d-下:%d (宽:%d-长:%d)",
		rect.left, rect.top, rect.right, rect.bottom, rect.Width(), rect.Height());
	MessageBox(str);

	ClientToScreen(&rect);

	str.Format(L"屏幕坐标系：左:%d-上:%d-右:%d-下:%d (宽:%d-长:%d)",
		rect.left, rect.top, rect.right, rect.bottom, rect.Width(), rect.Height());
	MessageBox(str);
}



void CCWnd类Dlg::OnBnClickedButton29()
{
	// TODO: 在此添加控件通知处理程序代码

	MoveWindow(200, 200, 800, 800,
		true/*该参数 如果是true，就是重绘操作；	如果是false，就不重绘，不重绘很不舒服*/);

}


void CCWnd类Dlg::OnBnClickedButton30()
{
	// TODO: 在此添加控件通知处理程序代码
	//static int n = 1;


	SetTimer(1111/*定时器ID*/, 1000/*间隔时间 1000ms*/,
			NULL/*不写函数 就是定时的消息*/);



}


void CCWnd类Dlg::OnBnClickedButton31()
{
	// TODO: 在此添加控件通知处理程序代码
	KillTimer(1111/*定时器的ID*/);
	//KillTimer(2222/*定时器的ID*/);
}


//添加的定时器的消息
void CCWnd类Dlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值


	switch (nIDEvent)		//定时器触发词处，	定时器每一秒触发一次，触发一次就运行下面的代码
	{
	case 1111:
		//让整个窗口往上走：
	{
		CRect rect;
		GetWindowRect(&rect);

		rect.top -= 10;
		rect.bottom -= 10;

		MoveWindow(&rect);
	}
		break;
	//case 2222:
	//	//让整个窗口往上走：
	//{
	//	CRect rect;
	//	GetWindowRect(&rect);

	//	rect.top += 10;
	//	rect.bottom += 10;
	//	KillTimer(1111);

	//	MoveWindow(&rect);
	//}
	//break;
	default:
		break;
	}



	CDialogEx::OnTimer(nIDEvent);
}


//抖动窗口：
void CCWnd类Dlg::OnBnClickedButton32()
{
	// TODO: 在此添加控件通知处理程序代码
	CRect rect;
	GetWindowRect(&rect);

	for (int i = 0; i < 5; i++)
	{
		rect.OffsetRect(-4, -4);
		MoveWindow(&rect);
		Sleep(50);

		rect.OffsetRect(4, 4);
		MoveWindow(&rect);
		Sleep(50);
	}
}


//既可以调窗口的大小 右可以调窗口的位置	 还可以指定
void CCWnd类Dlg::OnBnClickedButton33()
{
	// TODO: 在此添加控件通知处理程序代码

	CRect rect;
	GetWindowRect(&rect);

	/*
	SetActiveWindow();		//激活窗口；	就可以理解为鼠标点在窗口上去
	SetForegroundWindow();	//设置为最前面的窗口
	*/


	//前两个函数 都可以在这个函数里实现：
	SetWindowPos(
		&wndTopMost,/*插到哪个窗口的后面	这个指针是默认存在的，但是这是啥a??????		这个应该是置顶操作，该窗口就不能被覆盖了	这个参数相当于SetForoundWindow函数	*/
		0, 0,/*坐标*/
		2200, 1500,/*宽 高*/
		SWP_SHOWWINDOW/*显示方式		有很多的显示方式*/);



}


void CCWnd类Dlg::OnBnClickedButton22()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* TophWnd = GetTopWindow();		//得到该窗口上的最顶的窗口（按钮）
	if (TophWnd)
		TophWnd->SetWindowText(L"top");	//把该窗口（按钮）的工程名改为top；


}


void CCWnd类Dlg::OnBnClickedButton27()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* pWnd = GetDlgItem(IDC_BUTTON32);
	pWnd->SetFocus();		//设置焦点函数
	//选中id为32的按钮 把焦点移动到该按钮上，默认焦点是在第一按钮上的；
}


void CCWnd类Dlg::OnBnClickedButton35()
{
	// TODO: 在此添加控件通知处理程序代码
	CWnd* hWnd = GetFocus();


	static int n = 0;
	CString str;
	str.Format(L"焦点在此+ %d", ++n);

	if (hWnd)
		hWnd->SetWindowText(str);

}


BOOL CCWnd类Dlg::PreTranslateMessage(MSG* pMsg)
{
	// TODO: 在此添加专用代码和/或调用基类
	if (WM_KEYDOWN == pMsg->message &&
		VK_RETURN == pMsg->wParam)
	{
		CWnd* pWnd = GetFocus();

		if (pWnd)
		{
			pWnd->GetNextDlgTabItem(pWnd);
			pWnd->SetWindowText(L"heiheihei");
			pWnd->GetFocus();

			return true;	//自己处理过了，os就不会再处理了


		}
	}

	return CDialogEx::PreTranslateMessage(pMsg);
}


void CCWnd类Dlg::OnBnClickedButton23()
{
	// TODO: 在此添加控件通知处理程序代码
	CMenu* menu = GetMenu();

	int n;
}


void CCWnd类Dlg::OnBnClickedButton34()
{
	// TODO: 在此添加控件通知处理程序代码
}


void CCWnd类Dlg::OnBnClickedButton36()
{
	// TODO: 在此添加控件通知处理程序代码

	//先获取字体：
	CFont* pfont = GetFont();

	//再设置字体
	LOGFONT logfont;
	pfont->GetLogFont(&logfont);
	logfont.lfWidth = 20;
	logfont.lfHeight = 20;

	CWnd* pwnd = GetDlgItem(IDC_BUTTON36);

	static CFont font;
	font.CreateFontIndirect(&logfont);

	pwnd->SetFont(&font);

}


void CCWnd类Dlg::OnBnClickedButton37()
{
	// TODO: 在此添加控件通知处理程序代码

	//获取所有窗口：
	CListCtrl* plist = (CListCtrl*)GetDlgItem(IDC_LIST1);

	CWnd* pdeskwnd = GetDesktopWindow();
	CWnd* pwnd = pdeskwnd->GetWindow(GW_CHILD/*拿到子窗口*/)->GetWindow(GW_HWNDFIRST/*拿到第一个窗口*/);

	//遍历：
	int n = 0;
	CString str;

	while (pwnd)	//如果存在 就遍历下一个
	{
		str.Format(L"%d", n);
		plist->InsertItem(n, str);

		//获取窗口标题：
		pwnd->GetWindowText(str);
		plist->SetItemText(n, 1, str);;

		wchar_t buff[MAX_PATH] = { 0 };

		GetClassName(pwnd->m_hWnd, buff, MAX_PATH);
		plist->SetItemText(n, 2, buff);



		pwnd = pwnd->GetWindow(GW_HWNDNEXT/*下一个窗口*/);
		n++;

	}


}


//获取控件的id：
void CCWnd类Dlg::OnBnClickedButton38()
{
	// TODO: 在此添加控件通知处理程序代码
	CListCtrl* plist = (CListCtrl*)GetDlgItem(IDC_LIST1);
	int id = plist->GetDlgCtrlID();

	CString str;
	str.Format(L"id: %d", id);
	MessageBox(str);


}
